package com.bondex.charter.po;

import com.bondex.charter.pojo.ExtendInfo;
import com.bondex.charter.pojo.ContainerInfo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.v3.oas.annotations.media.Schema;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CharterBooking {
	private Integer id;

	@Schema(description = "委托号")
    @ExcelProperty(value = "委托号",index = 0)
	private String orderNo;

	@Schema(description = "订舱号（可能无用）")
    @ExcelProperty(value = "订舱号",index = 1)
	private String bookingNo;

	@Schema(description = "提单号")
	private String blNo;

	@Schema(description = "客户号")
    @ExcelProperty(value = "客户订单号",index = 3)
	private String customerNo;

	@Schema(description = "船名代码")
	private String vesselNo;

	@Schema(description = "船名")
	private String vessel;

	@Schema(description = "航次")
	private String voyage;

	@Schema(description = "预计开航时间")
	private Date etd;

	@Schema(description = "实际开航时间")
	private Date atd;

	@Schema(description = "截单时间")
	private Date siCutOff;

	@Schema(description = "截港时间")
	private Date cyCutOff;

	@Schema(description = "收货地代码")
	private String placeOfReceiptCode;

	@Schema(description = "收货地名称")
	private String placeOfReceiptName;

	@Schema(description = "装货港代码")
	private String portOfLoadingCode;

	@Schema(description = "装货港名称")
	private String portOfLoadingName;

	@Schema(description = "中转港代码")
	private String portOfTransshipmentCode;

	@Schema(description = "中转港名称")
	private String portOfTransshipmentName;

	@Schema(description = "卸货港代码")
	private String portOfDischargeCode;

	@Schema(description = "卸货港名称")
	private String portOfDischargeName;

	@Schema(description = "目的港代码")
	private String placeOfDeliveryCode;

	@Schema(description = "目的港名称")
	private String placeOfDeliveryName;

	@Schema(description = "交货地代码")
	private String destinationCode;

	@Schema(description = "交货地名称")
	private String destinationName;

	@Schema(description = "件数")
	private Long noOfPackage;

	@Schema(description = "包装方式代码")
	private String packageTypeCode;

	@Schema(description = "包装方式名称")
	private String packageTypeName;

	@Schema(description = "毛重")
	private BigDecimal grossWeight;

	@Schema(description = "毛重单位 KGS")
	private String grossWeightUnit;

	@Schema(description = "体积")
	private BigDecimal volume;

	@Schema(description = "体积单位 CBM")
	private String volumeUnit;

	@Schema(description = "HS CODE")
	private String hsCode;

	@Schema(description = "运输条款代码")
	private String deliveryTermCode;

	@Schema(description = "运输条款名称")
	private String deliveryTermName;

	@Schema(description = "付款方式代码")
	private String paymentMethodCode;

	@Schema(description = "付款方式名称")
	private String paymentMethodName;

	@Schema(description = "付款地代码")
	private String placeOfPayCode;

	@Schema(description = "付款地名称")
	private String placeOfPayName;

	@Schema(description = "签单方式代码")
	private String documentTypeCode;

	@Schema(description = "签单方式名称")
	private String documentTypeName;

	@Schema(description = "签发地代码")
	private String blIssuePlaceCode;

	@Schema(description = "签发地名称")
	private String blIssuePlaceName;

	@Schema(description = "箱型箱量的总计描述")
	private String containerNoAndType;

	@Schema(description = "合计件数")
	private BigDecimal containerTotalPackageQty;

	@Schema(description = "合计重量")
	private BigDecimal containerTotalWeight;

	@Schema(description = "合计体积")
	private BigDecimal containerTotalVolume;

	@Schema(description = "集装箱明细信息")
	private Object containerInfo;

	@Schema(description = "扩展信息")
	private Object extendInfo;

	@Schema(description = "轻重货标志。 0 普货； 1 重货； 2 轻货")
	private Byte bulkyHeavyFlag;

	@Schema(description = "订舱状态。 0 订舱待审核； 2 待定； 1 已放舱； 10 拒绝订舱； 11 退舱")
	private String bookingStatus;

	@Schema(description = "甩货。 0 未甩货； 1 甩货")
	private Byte isRollOver;

	@Schema(description = "拆票。 0 未拆票； 1 拆票")
	private Byte isBillSplit;

	@Schema(description = "合票。 0 未合票； 1 合票")
	private Byte isBillCombine;

	@Schema(description = "创建时间")
	private Date createDate;

	@Schema(description = "创建人")
	private String createBy;

	@Schema(description = "更新时间")
	private Date modifyDate;

	@Schema(description = "更新人")
	private String modifyBy;

	@Schema(description = "版本")
	private String version;

	@Schema(description = "操作备注")
	private String opRemark;

	@Schema(description = "提单备注")
	private String billRemark;

	@Schema(description = "发货人")
	private String shipper;

	@Schema(description = "收货人")
	private String consignee;

	@Schema(description = "通知人")
	private String notify;

	@Schema(description = "唛头")
	private String marksNo;

	@Schema(description = "品名")
    @ExcelProperty(value = "品名",index = 5)
	private String description;

	@Schema(description = "是否废弃。 0 未废弃； 1 已经废弃")
	private Byte delFlg;

	@Schema(description = "箱信息对象")
    private List<ContainerInfo> containerInfos;

	@Schema(description = "扩展信息解析结果")
	private ExtendInfo extendInfoBean;

	public Byte getDelFlg() {
		return delFlg;
	}

	public void setDelFlg(Byte delFlg) {
		this.delFlg = delFlg;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getOrderNo() {
		return orderNo;
	}

	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo == null ? null : orderNo.trim();
	}

	public String getBookingNo() {
		return bookingNo;
	}

	public void setBookingNo(String bookingNo) {
		this.bookingNo = bookingNo == null ? null : bookingNo.trim();
	}

	public String getBlNo() {
		return blNo;
	}

	public void setBlNo(String blNo) {
		this.blNo = blNo == null ? null : blNo.trim();
	}

	public String getCustomerNo() {
		return customerNo;
	}

	public void setCustomerNo(String customerNo) {
		this.customerNo = customerNo == null ? null : customerNo.trim();
	}

	public String getVesselNo() {
		return vesselNo;
	}

	public void setVesselNo(String vesselNo) {
		this.vesselNo = vesselNo == null ? null : vesselNo.trim();
	}

	public String getVessel() {
		return vessel;
	}

	public void setVessel(String vessel) {
		this.vessel = vessel == null ? null : vessel.trim();
	}

	public String getVoyage() {
		return voyage;
	}

	public void setVoyage(String voyage) {
		this.voyage = voyage == null ? null : voyage.trim();
	}

	public Date getEtd() {
		return etd;
	}

	public void setEtd(Date etd) {
		this.etd = etd;
	}

	public String getPlaceOfReceiptCode() {
		return placeOfReceiptCode;
	}

	public void setPlaceOfReceiptCode(String placeOfReceiptCode) {
		this.placeOfReceiptCode = placeOfReceiptCode == null ? null : placeOfReceiptCode.trim();
	}

	public String getPlaceOfReceiptName() {
		return placeOfReceiptName;
	}

	public void setPlaceOfReceiptName(String placeOfReceiptName) {
		this.placeOfReceiptName = placeOfReceiptName == null ? null : placeOfReceiptName.trim();
	}

	public String getPortOfLoadingCode() {
		return portOfLoadingCode;
	}

	public void setPortOfLoadingCode(String portOfLoadingCode) {
		this.portOfLoadingCode = portOfLoadingCode == null ? null : portOfLoadingCode.trim();
	}

	public String getPortOfLoadingName() {
		return portOfLoadingName;
	}

	public void setPortOfLoadingName(String portOfLoadingName) {
		this.portOfLoadingName = portOfLoadingName == null ? null : portOfLoadingName.trim();
	}

	public String getPortOfTransshipmentCode() {
		return portOfTransshipmentCode;
	}

	public void setPortOfTransshipmentCode(String portOfTransshipmentCode) {
		this.portOfTransshipmentCode = portOfTransshipmentCode == null ? null : portOfTransshipmentCode.trim();
	}

	public String getPortOfTransshipmentName() {
		return portOfTransshipmentName;
	}

	public void setPortOfTransshipmentName(String portOfTransshipmentName) {
		this.portOfTransshipmentName = portOfTransshipmentName == null ? null : portOfTransshipmentName.trim();
	}

	public String getPortOfDischargeCode() {
		return portOfDischargeCode;
	}

	public void setPortOfDischargeCode(String portOfDischargeCode) {
		this.portOfDischargeCode = portOfDischargeCode == null ? null : portOfDischargeCode.trim();
	}

	public String getPortOfDischargeName() {
		return portOfDischargeName;
	}

	public void setPortOfDischargeName(String portOfDischargeName) {
		this.portOfDischargeName = portOfDischargeName == null ? null : portOfDischargeName.trim();
	}

	public String getPlaceOfDeliveryCode() {
		return placeOfDeliveryCode;
	}

	public void setPlaceOfDeliveryCode(String placeOfDeliveryCode) {
		this.placeOfDeliveryCode = placeOfDeliveryCode == null ? null : placeOfDeliveryCode.trim();
	}

	public String getPlaceOfDeliveryName() {
		return placeOfDeliveryName;
	}

	public void setPlaceOfDeliveryName(String placeOfDeliveryName) {
		this.placeOfDeliveryName = placeOfDeliveryName == null ? null : placeOfDeliveryName.trim();
	}

	public String getDestinationCode() {
		return destinationCode;
	}

	public void setDestinationCode(String destinationCode) {
		this.destinationCode = destinationCode == null ? null : destinationCode.trim();
	}

	public String getDestinationName() {
		return destinationName;
	}

	public void setDestinationName(String destinationName) {
		this.destinationName = destinationName == null ? null : destinationName.trim();
	}

	public Long getNoOfPackage() {
		return noOfPackage;
	}

	public void setNoOfPackage(Long noOfPackage) {
		this.noOfPackage = noOfPackage;
	}

	public String getPackageTypeCode() {
		return packageTypeCode;
	}

	public void setPackageTypeCode(String packageTypeCode) {
		this.packageTypeCode = packageTypeCode == null ? null : packageTypeCode.trim();
	}

	public String getPackageTypeName() {
		return packageTypeName;
	}

	public void setPackageTypeName(String packageTypeName) {
		this.packageTypeName = packageTypeName == null ? null : packageTypeName.trim();
	}

	public BigDecimal getGrossWeight() {
		return grossWeight;
	}

	public void setGrossWeight(BigDecimal grossWeight) {
		this.grossWeight = grossWeight;
	}

	public String getGrossWeightUnit() {
		return grossWeightUnit;
	}

	public void setGrossWeightUnit(String grossWeightUnit) {
		this.grossWeightUnit = grossWeightUnit == null ? null : grossWeightUnit.trim();
	}

	public BigDecimal getVolume() {
		return volume;
	}

	public void setVolume(BigDecimal volume) {
		this.volume = volume;
	}

	public String getVolumeUnit() {
		return volumeUnit;
	}

	public void setVolumeUnit(String volumeUnit) {
		this.volumeUnit = volumeUnit == null ? null : volumeUnit.trim();
	}

	public String getHsCode() {
		return hsCode;
	}

	public void setHsCode(String hsCode) {
		this.hsCode = hsCode == null ? null : hsCode.trim();
	}

	public String getDeliveryTermCode() {
		return deliveryTermCode;
	}

	public void setDeliveryTermCode(String deliveryTermCode) {
		this.deliveryTermCode = deliveryTermCode == null ? null : deliveryTermCode.trim();
	}

	public String getDeliveryTermName() {
		return deliveryTermName;
	}

	public void setDeliveryTermName(String deliveryTermName) {
		this.deliveryTermName = deliveryTermName == null ? null : deliveryTermName.trim();
	}

	public String getPaymentMethodCode() {
		return paymentMethodCode;
	}

	public void setPaymentMethodCode(String paymentMethodCode) {
		this.paymentMethodCode = paymentMethodCode == null ? null : paymentMethodCode.trim();
	}

	public String getPaymentMethodName() {
		return paymentMethodName;
	}

	public void setPaymentMethodName(String paymentMethodName) {
		this.paymentMethodName = paymentMethodName == null ? null : paymentMethodName.trim();
	}

	public String getPlaceOfPayCode() {
		return placeOfPayCode;
	}

	public void setPlaceOfPayCode(String placeOfPayCode) {
		this.placeOfPayCode = placeOfPayCode == null ? null : placeOfPayCode.trim();
	}

	public String getPlaceOfPayName() {
		return placeOfPayName;
	}

	public void setPlaceOfPayName(String placeOfPayName) {
		this.placeOfPayName = placeOfPayName == null ? null : placeOfPayName.trim();
	}

	public String getDocumentTypeCode() {
		return documentTypeCode;
	}

	public void setDocumentTypeCode(String documentTypeCode) {
		this.documentTypeCode = documentTypeCode == null ? null : documentTypeCode.trim();
	}

	public String getDocumentTypeName() {
		return documentTypeName;
	}

	public void setDocumentTypeName(String documentTypeName) {
		this.documentTypeName = documentTypeName == null ? null : documentTypeName.trim();
	}

	public String getBlIssuePlaceCode() {
		return blIssuePlaceCode;
	}

	public void setBlIssuePlaceCode(String blIssuePlaceCode) {
		this.blIssuePlaceCode = blIssuePlaceCode == null ? null : blIssuePlaceCode.trim();
	}

	public String getBlIssuePlaceName() {
		return blIssuePlaceName;
	}

	public void setBlIssuePlaceName(String blIssuePlaceName) {
		this.blIssuePlaceName = blIssuePlaceName == null ? null : blIssuePlaceName.trim();
	}

	public String getContainerNoAndType() {
		return containerNoAndType;
	}

	public void setContainerNoAndType(String containerNoAndType) {
		this.containerNoAndType = containerNoAndType == null ? null : containerNoAndType.trim();
	}

	public BigDecimal getContainerTotalPackageQty() {
		return containerTotalPackageQty;
	}

	public void setContainerTotalPackageQty(BigDecimal containerTotalPackageQty) {
		this.containerTotalPackageQty = containerTotalPackageQty;
	}

	public BigDecimal getContainerTotalWeight() {
		return containerTotalWeight;
	}

	public void setContainerTotalWeight(BigDecimal containerTotalWeight) {
		this.containerTotalWeight = containerTotalWeight;
	}

	public BigDecimal getContainerTotalVolume() {
		return containerTotalVolume;
	}

	public void setContainerTotalVolume(BigDecimal containerTotalVolume) {
		this.containerTotalVolume = containerTotalVolume;
	}

	public Object getContainerInfo() {
		return containerInfo;
	}

	public void setContainerInfo(Object containerInfo) {
		this.containerInfo = containerInfo;
	}

	public Object getExtendInfo() {
		return extendInfo;
	}

	public void setExtendInfo(Object extendInfo) {
		this.extendInfo = extendInfo;
	}

	public String getBookingStatus() {
		return bookingStatus;
	}

	public void setBookingStatus(String bookingStatus) {
		this.bookingStatus = bookingStatus == null ? null : bookingStatus.trim();
	}

	public Date getCreateDate() {
		return createDate;
	}

	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}

	public String getCreateBy() {
		return createBy;
	}

	public void setCreateBy(String createBy) {
		this.createBy = createBy == null ? null : createBy.trim();
	}

	public Date getModifyDate() {
		return modifyDate;
	}

	public void setModifyDate(Date modifyDate) {
		this.modifyDate = modifyDate;
	}

	public String getModifyBy() {
		return modifyBy;
	}

	public void setModifyBy(String modifyBy) {
		this.modifyBy = modifyBy == null ? null : modifyBy.trim();
	}

	public String getVersion() {
		return version;
	}

	public void setVersion(String version) {
		this.version = version == null ? null : version.trim();
	}

	public String getOpRemark() {
		return opRemark;
	}

	public void setOpRemark(String opRemark) {
		this.opRemark = opRemark == null ? null : opRemark.trim();
	}

	public String getBillRemark() {
		return billRemark;
	}

	public void setBillRemark(String billRemark) {
		this.billRemark = billRemark == null ? null : billRemark.trim();
	}

	public String getShipper() {
		return shipper;
	}

	public void setShipper(String shipper) {
		this.shipper = shipper == null ? null : shipper.trim();
	}

	public String getConsignee() {
		return consignee;
	}

	public void setConsignee(String consignee) {
		this.consignee = consignee == null ? null : consignee.trim();
	}

	public String getNotify() {
		return notify;
	}

	public void setNotify(String notify) {
		this.notify = notify == null ? null : notify.trim();
	}

	public String getMarksNo() {
		return marksNo;
	}

	public void setMarksNo(String marksNo) {
		this.marksNo = marksNo == null ? null : marksNo.trim();
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description == null ? null : description.trim();
	}

    public List<ContainerInfo> getContainerInfos() {
        return containerInfos;
    }

    public void setContainerInfos(List<ContainerInfo> containerInfos) {
        this.containerInfos = containerInfos;
    }

	public ExtendInfo getExtendInfoBean() {
		return extendInfoBean;
	}

	public void setExtendInfoBean(ExtendInfo extendInfoBean) {
		this.extendInfoBean = extendInfoBean;
	}

	public Date getAtd() {
		return atd;
	}

	public void setAtd(Date atd) {
		this.atd = atd;
	}

	public Date getSiCutOff() {
		return siCutOff;
	}

	public void setSiCutOff(Date siCutOff) {
		this.siCutOff = siCutOff;
	}

	public Date getCyCutOff() {
		return cyCutOff;
	}

	public void setCyCutOff(Date cyCutOff) {
		this.cyCutOff = cyCutOff;
	}

	public Byte getBulkyHeavyFlag() {
		return bulkyHeavyFlag;
	}

	public void setBulkyHeavyFlag(Byte bulkyHeavyFlag) {
		this.bulkyHeavyFlag = bulkyHeavyFlag;
	}

	public Byte getIsRollOver() {
		return isRollOver;
	}

	public void setIsRollOver(Byte isRollOver) {
		this.isRollOver = isRollOver;
	}

	public Byte getIsBillSplit() {
		return isBillSplit;
	}

	public void setIsBillSplit(Byte isBillSplit) {
		this.isBillSplit = isBillSplit;
	}

	public Byte getIsBillCombine() {
		return isBillCombine;
	}

	public void setIsBillCombine(Byte isBillCombine) {
		this.isBillCombine = isBillCombine;
	}
}